<?php 
/** 

一个用于PHP脚本漏洞的静态源代码分析器
作者:约翰内斯·达斯
版权(C) 2012 Johannes Dahse
本程序为自由软件;
您可以根据自由软件基金会发布的GNU通用公共许可证条款重新发布和/或修改它;
许可的版本3，或者(由您选择)任何以后的版本。
这个程序是希望它会有用，但没有任何保证;
甚至没有对适销性或适合特定用途的隐含保证。
有关更多细节，请参阅GNU通用公共许可证。
您应该已经收到一份GNU通用公共许可证的副本，连同本程序;
如果没有，请查看<http://www.gnu.org/licenses/>
 **/

	function searchFile($file_name, $search)
	{
		$search = str_replace('/', '.', $search);
		$lines = file($file_name);
		$block = new VulnBlock('Search hits');
		for($i=0; $i<count($lines); $i++)
	 	{
			if(preg_match("/".trim($search)."/i", $lines[$i], $matches))
			{
				$GLOBALS['count_matches']++;
								
				$tokens = @token_get_all('<? '.trim($lines[$i]).' ?'.'>');
				$line = highlightline($tokens, '', $i+1, $search);
				
				$line = preg_replace("/(>[^<]*)(".preg_quote(trim($matches[0]), '/').")/i", "$1<span class='markline'>$2</span>", $line);
				$new_find = new VulnTreeNode($line);
				$new_find->filename = $file_name;
				$new_find->title = 'Regular expression match';
				$new_find->lines[] = $i+1;
					
				$block->treenodes[] = $new_find;	
				$block->vuln = true;	
			}
		}
		$id = (isset($GLOBALS['output'][$file_name])) ? count($GLOBALS['output'][$file_name]) : 0;
		$GLOBALS['output'][$file_name][$id] = $block;
	}
	
?> 